/*
 * OknoGłówne.java
 *
 * Created on 15 maj 2009, 13:35
 */

package BasaSobol;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.DefaultListModel;
import javax.swing.JComboBox;

/**
 *
 * @author  bąsa
 */
public class OknoGlowne extends javax.swing.JFrame implements ActionListener {
    
    /** Creates new form OknoGłówne */
    public OknoGlowne() {
        initComponents();

        PrzyciskNowaRozmowa.addActionListener(this);
        PrzyciskOtworzArchiwum.addActionListener(this);
        ListaStatusow.addActionListener(this);

        ListaStatusow.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dostepny", "Zaraz wracam", "Niedostepny"}));

        addWindowListener(new WindowAdapter() {
            @Override
          public void windowClosing(WindowEvent e) {
            tinsiec.MessageInfo msg = new tinsiec.MessageInfo(modulXML.wiadomoscOUsuwanymKliencie(Main.mojLogin), "");
            System.out.println(msg.getContent());
            Main.wiadomosciWychodzaceMulticast.add(msg);
          }
        });
        
        this.setTitle("miau miau");
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        danePolaUzytkownikow = new DefaultListModel();
        poleUzytkownikow = new javax.swing.JList(danePolaUzytkownikow);
        PrzyciskNowaRozmowa = new javax.swing.JButton();
        PrzyciskOtworzArchiwum = new javax.swing.JButton();
        ListaStatusow = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        poleUzytkownikow.setModel(new javax.swing.AbstractListModel() {
            String[] strings = {};
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(poleUzytkownikow);

        PrzyciskNowaRozmowa.setText("Rozmowa");

        PrzyciskOtworzArchiwum.setText("Archiwum");

        ListaStatusow.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dostepny", "Zaraz wracam", "Niedostepny"}));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addComponent(PrzyciskNowaRozmowa)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(PrzyciskOtworzArchiwum))
            .addComponent(ListaStatusow, 0, 168, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PrzyciskNowaRozmowa)
                    .addComponent(PrzyciskOtworzArchiwum))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ListaStatusow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        
        
        pack();
    }// </editor-fold>
    
    /**
     * @param args the command line arguments
     */
    
   
    
    // Variables declaration - do not modify
    private javax.swing.JButton PrzyciskNowaRozmowa;
    private javax.swing.JButton PrzyciskOtworzArchiwum;
    private javax.swing.JComboBox ListaStatusow;
    private javax.swing.JList poleUzytkownikow;
    private DefaultListModel danePolaUzytkownikow;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration

    
    private void PrzyciskNowaRozmowaKlikniety(ActionEvent e) {
        if(poleUzytkownikow.getSelectedIndex() != -1) {
            String temp = poleUzytkownikow.getSelectedValue().toString();
            int index = temp.indexOf(" (");
            new OknoRozmowy(temp.substring(0, index)).setVisible(true);
        }
    }
    
    private void PrzyciskOknoArchiwum(ActionEvent e) {
        if(OknoArchiwum.otwarte == false) {
            new OknoArchiwum().setVisible(true);
        }
    }
    
    private void PrzyciskZmianaStatusu(String nowyStatus) {
        System.out.println(nowyStatus);
        Main.mojStatus = nowyStatus;
        tinsiec.MessageInfo msg = new tinsiec.MessageInfo(modulXML.wiadomoscZmianaStatusu(nowyStatus), "");
        Main.wiadomosciWychodzaceMulticast.add(msg);
        //System.out.println(msg.getContent());
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Rozmowa")) {
            PrzyciskNowaRozmowaKlikniety(e);
        } else {
            if(e.getActionCommand().equals("Archiwum")) {
                PrzyciskOknoArchiwum(e);
            } else {
                JComboBox cb = (JComboBox)e.getSource();
                PrzyciskZmianaStatusu((String)cb.getSelectedItem());
            }
        }
    }
    
    /**
     * Funkcja funkcja wczytuje dane z kolejki klientów do wyświetlanej listy użytkowników
     */
    public void aktualizujPokazywanychUzytkownikow() {
        int liczbaKlientow = Main.klienci.size();
        String sTemp[] = new String[liczbaKlientow];
        for(int i = 0; i < liczbaKlientow; i++) {
            sTemp[i] = new String(Main.klienci.get(i).getLogin() + " (" + Main.klienci.get(i).getStatus() + ")");
        }
        poleUzytkownikow.setListData(sTemp);
    }
}
